package hongcheng.code_generator.data;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;

import hongcheng.code_generator.entity.config.ClassConfig;
import hongcheng.code_generator.entity.config.CodeGeneratorConfig;
import hongcheng.code_generator.entity.db.TableMetadata;
/**
 * 	默认数据重组类
 * */
public class DefaultDataReorganize extends AbstractDataReorganize {

	
	/***
	 * 	数据重组，获取可以直接用于模板文件的map对象
	 * 	主要是重新制定map的键名
	 * 	@param codeGeneratorConfig 配置文件配置实体
	 * 	@param dbMetadata 数据库元数据
	 * */
	public Map<?, ?> getDataMap(CodeGeneratorConfig codeGeneratorConfig,TableMetadata dbMetadata) {
		
		Set<String> javaClassSet = dbMetadata.getTableColumnList().parallelStream().map((tableColumnMetadata)->{
			return tableColumnMetadata.getJavaClassName();
		}).collect(Collectors.toSet());
		LinkedHashMap<String,Object> map = new LinkedHashMap<String,Object>();
		ClassConfig classConfig = codeGeneratorConfig.getClassConfig();
		map.put("package", classConfig.getPackagePath());
		map.put("entityClassName", classConfig.getEntityClassName());
		map.put("voClassName", classConfig.getVoClassName());
		map.put("daoClassName", classConfig.getDaoClassName());
		map.put("serviceClassName", classConfig.getServiceClassName());
		map.put("controllerClassName", classConfig.getControllerClassName());
		map.put("author", codeGeneratorConfig.getCommentConfig().getAuthor());
		map.put("config", codeGeneratorConfig);
		map.put("date", LocalDateTime.now().format(DateTimeFormatter.ofPattern(codeGeneratorConfig.getCommentConfig().getDateCommentFormatPattern())));
		map.put("table", dbMetadata);
		map.put("javaClassSet", javaClassSet);
		return map;
	}




	
	
	
	
}
